{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Names"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "https://en.wikipedia.org/wiki/Theta\n",
    "\n",
    "$\\theta$ is commonly used to represent angles in math"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Tan"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Given an angle, the coordinates of vectors along that angle will have a constant ratio.\n",
    "\n",
    "This ratio is called the tangent of the angle, and the tangent function is written as tan.\n",
    "\n",
    "You’ve seen a few of its approximate values so far:\n",
    "\n",
    "```\n",
    "tan(45°) = 1\n",
    "tan(116.57°) = –2\n",
    "```"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "for example, (1,1), (2,2) was located on the line of 45 degrees\n",
    "\n",
    "and for each point on that line, `y/x == 1 returns True`"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Sin and Cos"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![image.png](images/1.sinaAndCos.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "the tangent of the angle gives us the vertical distance covered divided by the horizontal distance.\n",
    "\n",
    "$$\n",
    "\\tan(angle) = \\frac{vertical}{horizontal}\n",
    "$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![image.png](images/2.theMeaningOfSinAndCos.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "So the `sin(angle)` represents how many `vertical` units you can get if you travel `distance` units on the direction of `angle` degree\n",
    "\n",
    "So the `cos(angle)` represents how many `horizontal` units you can get if you travel `distance` units on the direction of `angle` degree\n",
    "\n",
    "`vertical == y`\n",
    "\n",
    "`horizontal = x`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# radian"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![image.png](images/3.theDefinationOfRadian.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "You can think of radians as another kind of ratio: for a given angle, its measurement in radians tells you how many radiuses you’ve gone around the circle."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "$\n",
    "\\begin{align}\n",
    "45^{\\circ} = \\frac{\\pi} {4}\n",
    "\\end{align}\n",
    "$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3.141592653589793"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from math import pi\n",
    "pi"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9999999999999999"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from math import tan\n",
    "tan(pi/4)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "45.0"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from math import degrees\n",
    "#pi/4 * 57.296\n",
    "degrees(pi/4)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "from math import sin, cos\n",
    "def toCartesian(polar_vector):\n",
    "    distance, angle = polar_vector[0], polar_vector[1]\n",
    "    return (distance*cos(angle), distance*sin(angle))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(4.242640687119286, 4.242640687119285)"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "point = toCartesian([6, pi/4])\n",
    "point"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "from vector_drawing import *"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "draw(Segment((0,0), point))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Inverse trigonometric functions (antitrigonometric functions)\n",
    "\n",
    "We know what `sin()` function does: Return the sine of x radians.\n",
    "\n",
    "But what if we have known the `sine value`, and want to get the corresponding `x radians` back? What do we do?\n",
    "\n",
    "We use an anti-function or inverse function.\n",
    "\n",
    "https://en.wikipedia.org/wiki/Inverse_trigonometric_functions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8414709848078965"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from math import asin\n",
    "sin(1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.0"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "asin(0.8414709848078965)\n",
    "1.0"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# polar system\n",
    "\n",
    "Instead of representing the point by (x,y), we use length and angle to do that job."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [],
   "source": [
    "from math import radians\n",
    "\n",
    "point = (2,2)\n",
    "angle = 45\n",
    "angle = radians(angle)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [],
   "source": [
    "from math import atan2, sqrt, degrees\n",
    "\n",
    "def to_polar(vector):\n",
    "    x, y = vector[0], vector[1]\n",
    "    angle = atan2(y,x) #arctangent\n",
    "    angle = degrees(angle)\n",
    "    return (sqrt(x**2+y**2), angle)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(2.8284271247461903, 45.0)"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "to_polar([2,2])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(1.0, 90.0)"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "to_polar([0,1])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Exercise 2.7\n",
    "\n",
    "Confirm that the vector given by Cartesian coordinates (–1.34, 2.68) has a length of approximately 3 as expected."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2.9963310898497184"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from math import sqrt\n",
    "\n",
    "def length(*args):\n",
    "    r = 0\n",
    "    for i in args:\n",
    "        r += i ** 2\n",
    "    return sqrt(r)\n",
    "\n",
    "length(-1.34, 2.68)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Exercise 2.31\n",
    "\n",
    "What are the sine and cosine of 0°? Of 90°? Of 180°? In other words, how many vertical and horizontal units are covered per unit distance in any of these directions?\n",
    "\n",
    "Solution:\n",
    "\n",
    "At 0°, no vertical distance is covered, so `sin(0°) = 0`; rather, every unit of distance traveled is a unit of horizontal distance, so `cos(0°) = 1`.\n",
    "\n",
    "For 90° (a quarter turn counterclockwise), every unit traveled is a positive vertical unit, so `sin(90°) = 1`, while `cos(90°) = 0`.\n",
    "\n",
    "Finally, at 180°, every unit of distance traveled is a negative unit in the x direction, so `cos(180°) = –1` and `sin(180°) = 0`."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Exercise 2.37\n",
    "\n",
    "The following list comprehension creates 1,000 points in polar coordinates:\n",
    "\n",
    "`[(cos(5*x*pi/500.0), 2*pi*x/1000.0) for x in range(0,1000)]`\n",
    "\n",
    "In Python code, convert these to Cartesian coordinates and connect them in a closed loop with line segments to draw a picture."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1000"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "thePolarPoints = [(cos(5*x*pi/500.0), 2*pi*x/1000.0) for x in range(0,1000)]\n",
    "len(thePolarPoints)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [],
   "source": [
    "from math import sin, cos\n",
    "def toCartesian(polar_vector):\n",
    "    distance, angle = polar_vector[0], polar_vector[1]\n",
    "    return (distance*cos(angle), distance*sin(angle))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [],
   "source": [
    "theCartesianPoints = [toCartesian(p) for p in thePolarPoints]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "draw(Polygon(*theCartesianPoints))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
